/**
  * class BodyPart
  * A body part that is attached to a character.
  * @param {String} name The name of this Body Part
  */
var BodyPart = function(name){
    /**
     * The type of Body Part this Body Part is.
     */
    var type = "";
    
    /**
     * The layer(s) that are pointed to by this BodyPart. There can be multiple layers
     * that belong to a body part. For example, the eyebrows are defined as one body
     * part but they are usually split into two layers.
     */
    var layers = "";

    /**
     * The Character that this BodyPart belongs to.
     */
    var parent = "";

    /**
     * The controller type to be generated for this BodyPart.
     */
    var controller = "";
    return {
        /**
         *Sets the layers that define this Body Part
         * @param {Array | Layer} layers This method can accept either an array of layers or a layer itself.
         * @return {Bool} True if the layers were set succesfully, False if they weren't.
         */
        setLayers : function (layers)
        {

        },

        /**
         * Returns an array of this Body Part's layers
         * @return {Array} An array of this Body Part's layers
         */
        getLayers : function ()
        {

        },

        /**
         * @param {String} name The name to be set as this BodyPart's name.
         */
        rename : function (name)
        {

        },

        /**
         * Returns the name of this BodyPart
         */
        getName : function ()
        {

        },

        /**
         * @param {String} comment The comment to be added as this BodyPart layer's name.
         * @param {Bool} overwrite True if the comment should be overwritten.
         *              False if the comment should be appended to the current coment.
         */
        setComment : function (comment, overwrite)
        {
            if(overwrite == undefined)
            {
                overwrite = false;
            }
        },

        /**
         * Returns this BodyPart layer's comment.
         */
        getComment : function ()
        {

        },

        /**
         * Toggles the solo switch for this BodyPart.
         */
        toggleSolo : function ()
        {

        },

        /**
         * Toggles the visibility of this BodyPart
         */
        toggleVisibility : function ()
        {

        },

        /**
         * Toggles the shy switch for this BodyPart
         */
        toggleShy : function ()
        {

        },

        /**
         * Generates the controller for this Body Part and then links the body part's
         * properties to it.
         */
        createController : function ()
        {

        }
    }
}